STM32中挂载SDRAM内存说明

您所在的位置:网站首页 fpga 外接内存 STM32中挂载SDRAM内存说明

STM32中挂载SDRAM内存说明

2023-08-16 02:09| 来源: 网络整理| 查看: 265

SDRAM使用总结

2018-7-9 08:57 2138 4 4 分类: MCU/ 嵌入式 文集: stm32

最近stm32学到使用SDRAM了,板载SDRAM为IS42S16400J。

 

SDRAM为一种可以运行存储在存储器上的代码的存储器,stm32内部有2M的代码运行空间,一般都是够用的,如果不够用的时候就可以用SDRAM扩大代码运行空间。

 

SDRAM是通过FMC连接后直接映射到stm32内部寻址空间,与IIC和SPI需要操作总线不一样,操作SDRAM只需要在程序中定义一个指向这个空间的指针,通过指针直接修改存储单元内容,FMC外设会自动完成数据访问过程。

 

 

为了使FMC完成这些数据访问操作,需要在程序一开始进行初始化过程,一共包括对GPIO管脚时钟的初始化、FMC的初始化、SDRAM时序初始化。

 

SDRAM我觉得最重要的就是初始化过程了,初始化顺序一定要注意,一定要按照GPIO->FMC->SDRAM这个顺序初始化。

 

使用CubeMX创建的stm32工程需要注意,SDRAM时序初始化不能放在HAL_SDRAM_MspInit里,因为CubeMX生成的程序初始化过程是这样的,MX_FMC_Init->HAL_SDRAM_Init->HAL_SDRAM_MspInit,如果SDRAM时序初始化放在HAL_SDRAM_MspInit里,会由于FMC还没有初始化成功而导致SDRAM时序初始化失败。

 

我一开始就是由于不清楚这个初始化顺序,导致程序一直卡在SDRAM读写处。

 

 

读写SDRAM的话,只需要用一个指向这个空间地址的指针,然后操作这个指针指向的内容就好了。一个简单的读的例子如下。

IAR工程中:__no_init  @  来进行实现

uint32_t *pSDRAM;

#define SDRAM_BANK_ADDR     ((uint32_t)0xD0000000)

__no_init   uint32_t RadomBuffer[10000]       @   SDRAM_BANK_ADDR     ;//这个就是制定内存空间的语法

*pSDRAM=RadomBuffer[count];



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3